package com.lenovo.study;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

import static org.springframework.boot.SpringApplication.run;

@SpringBootApplication
public class StudyApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = run(StudyApplication.class, args);
    }

//    @Bean public ServletRegistrationBean zuulServlet() {
//        ServletRegistrationBean servlet = new ServletRegistrationBean(new ZuulServlet());
//        servlet.addUrlMappings("/test");
//        return servlet;
//    }
//
//    @Bean public FilterRegistrationBean contextLifecycleFilter() {
//        FilterRegistrationBean filter = new FilterRegistrationBean(new ContextLifecycleFilter());
//        filter.addUrlPatterns("/*");
//        return filter;
//    }
//
//    @Component public static class MyCommandLineRunner implements CommandLineRunner {
//
//        @Override public void run(String... strings) throws Exception {
//            MonitoringHelper.initMocks();
//            initJavaFilters();
//        }
//
//        private void initJavaFilters() {
//            final FilterRegistry r = FilterRegistry.instance();
//            r.put("javaPreFilter", new ZuulFilter() {
//                @Override public String filterType() {
//                    return "pre";
//                }
//
//                @Override public int filterOrder() {
//                    return 50000;
//                }
//
//                @Override public boolean shouldFilter() {
//                    return true;
//                }
//
//                @Override public Object run() {
//                    System.out.println("running javaPreFilter");
//                    RequestContext.getCurrentContext().set("name", "liaokailin");
//                    return null;
//                }
//            });
//            r.put("javaRoutingFilter", new ZuulFilter() {
//                @Override public String filterType() {
//                    return "route";
//                }
//
//                @Override public int filterOrder() {
//                    return 50000;
//                }
//
//                @Override public boolean shouldFilter() {
//                    return false;
//                }
//
//                @Override public Object run() {
//                    System.out.println("running javaRoutingFilter");
//                    try {
//                        RequestContext.getCurrentContext().getResponse()
//                                                        .sendRedirect("http://blog.csdn.net/liaokailin/");
//                    } catch (IOException e) {
//                        e.printStackTrace();
//                    }
//                    return null;
//                }
//            });
//            r.put("javaPostFilter", new ZuulFilter() {
//                @Override public String filterType() {
//                    return "post";
//                }
//
//                @Override public int filterOrder() {
//                    return 50000;
//                }
//
//                @Override public boolean shouldFilter() {
//                    return true;
//                }
//
//                @Override public Object run() {
//                    System.out.println("running javaPostFilter");
//                    System.out.println(RequestContext.getCurrentContext().get("name").toString());
//                    return null;
//                }
//            });
//        }
//    }
}
